﻿using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using BOMS.ConsoleService;
using System.Runtime.InteropServices;
using BOMS.Lib;
using System.Net;
using IOCPServer;
using System.Configuration;
using BOMSConsoleService.Lib;

namespace BOMSConsoleService
{
    class Program
    {
        //[DllImport("User32.dll ", EntryPoint = "FindWindow")]
        //private static extern int FindWindow(string lpClassName, string lpWindowName);
        //[DllImport("user32.dll ", EntryPoint = "GetSystemMenu")]
        //extern static IntPtr GetSystemMenu(IntPtr hWnd, IntPtr bRevert);
        //[DllImport("user32.dll ", EntryPoint = "RemoveMenu")]
        //extern static int RemoveMenu(IntPtr hMenu, int nPos, int flags);
        static readonly Boolean IsOnlyPrintDataShort = bool.Parse(ConfigurationManager.AppSettings["LogExceptionFlag"]);
        static readonly ushort LocalPort = ushort.Parse(ConfigurationManager.AppSettings["ConsoleServiceTCPPort"]);
        
        static void Main(string[] args)
        {
            //SrvMngr srv = new SrvMngr();
            //srv.Start();

            // IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.0.110"), 1238);
            //绑定端口 
            IPEndPoint iep = new IPEndPoint(IPAddress.Any, LocalPort);//IPAddress.Any
            Server objServer = new Server(10000, 4096);//不能超过800M 4096

            objServer.Init();
            Output.PrintLine("Start to open port...");
            objServer.Start(iep);
            Output.PrintLine(string.Format("Service on port {0} Open successful!", iep.ToString()));

            try
            {
                //与控制台标题名一样的路径            
                //string fullPath = System.Environment.CurrentDirectory + "\\BOMSConsoleService.exe";
                //根据控制台标题找控制台          
                //int WINDOW_HANDLER = FindWindow(null, fullPath);
                //找关闭按钮            
                //IntPtr CLOSE_MENU = GetSystemMenu((IntPtr)WINDOW_HANDLER, IntPtr.Zero);
                // int SC_CLOSE = 0xF060;
                //关闭按钮禁用           
                //RemoveMenu(CLOSE_MENU, SC_CLOSE, 0x0);
                //使用命令关闭            
                while (true)
                {
                    if (Console.ReadLine().ToLower() == "exit")
                    {
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error message:" + ex.Message);
                Log lg = new Log();
                lg.log(ex);
            }

        }
    }
}
